#include "ParserUtil.h"
#include <sstream>

bool ParserUtil::parseRect(const std::wstring &str, RECT &rect)
{
    // 初始化RECT为0
    rect = {0, 0, 0, 0};

    // 如果输入字符串为空，返回失败
    if (str.empty())
    {
        return false;
    }

    // 移除字符串中的空格
    std::wstring cleanedStr = str;
    cleanedStr.erase(std::remove(cleanedStr.begin(), cleanedStr.end(), L' '), cleanedStr.end());

    // 使用wstringstream解析逗号分隔的值
    std::wstringstream ss(cleanedStr);
    std::wstring token;
    int values[4] = {0};
    int index = 0;

    while (std::getline(ss, token, L',') && index < 4)
    {
        // 跳过空token
        if (token.empty())
        {
            continue;
        }

        try
        {
            values[index] = std::stoi(token);
            index++;
        }
        catch (const std::exception &)
        {
            // 如果转换失败，返回false
            return false;
        }
    }

    // 必须有4个有效的数值才返回成功
    if (index == 4)
    {
        rect.left = values[0];
        rect.top = values[1];
        rect.right = values[2];
        rect.bottom = values[3];
        return true;
    }

    return false;
}